#!/usr/bin/env python
# -*-coding:utf-8 -*-


"""
快速排序使用分治法来把一个串（list）分为两个子串（sub-lists）。具体算法描述如下：

1. 从数列中挑出一个元素，称为 “基准”（pivot）；
2。 重新排序数列，所有元素比基准值小的摆放在基准前面，所有元素比基准值大的摆在基准的后面（相同的数可以到任一边）。在这个分区退出之后，该基准就处于数列的中间位置。这个称为分区（partition）操作；
3. 递归地（recursive）把小于基准值元素的子数列和大于基准值元素的子数列排序。
"""


def quickSort(array):
    if len(array) < 2:
        return array
    else:
        pivot_index = 0  # 基准元素索引
        pivot = array[pivot_index]  # 基准元素值
        less_part = [i for i in array[pivot_index + 1:] if i <= pivot]
        print(less_part)
        large_part = [i for i in array[pivot_index + 1:] if i > pivot]
        print(large_part)
        return quickSort(less_part) + [pivot] + quickSort(large_part)


array = [6, 3, 4, 2, 9, 7, 8]
array2 = quickSort(array)
print(array2)
